function C_ordered = sort_connectivity_matrix(C, mode)
    % 验证输入参数
    validateattributes(C, {'numeric'}, {'square', 'nonempty'}, mfilename, 'C', 1);
    if ~ismember(mode, {'global', 'local'})
        error('模式必须是 ''global'' 或 ''local''');
    end

    % 计算差异矩阵 (disparity matrix)
    switch mode
        case 'global'
            delta = 2 * (1 - C); % 全局模式: 高连接 -> 小差异
        case 'local'
            delta = C.^2;         % 局部模式: 高连接 -> 大差异
    end

    % 确保差异矩阵对称、非负、对角线为零
    delta = (delta + delta') / 2;           % 强制对称
    delta(1:size(delta,1)+1:end) = 0;       % 对角线置零
    delta = max(delta, 0);                  % 强制非负
    
    % 添加微小随机扰动避免数值问题 (如全零矩阵)
    % delta = delta + 1e-6 * rand(size(delta));

    % 尝试使用单维标度 (UDS) 获取电极顺序
    try
        % 设置优化参数: 增加迭代次数和放宽容差
        options = statset('MaxIter', 5000, 'TolFun', 1e-7, 'TolX', 1e-7);
        
        % 执行多维标度 (降至1维)
        Y = mdscale(delta, 1, 'Criterion', 'sstress', 'Start', 'random', 'Options', options);
        
        % 按一维坐标排序电极
        [~, order] = sort(Y);
        
    catch ME
        % 若UDS失败, 改用层次聚类
        % warning('UDS失败: %s, 改用层次聚类', ME.message);
        
        % 转换为距离向量 (层次聚类需要)
        dist_vec = squareform(delta);
        
        % 层次聚类 (Ward法最小化类内方差)
        Z = linkage(dist_vec, 'ward');
        
        % 优化叶子顺序
        order = optimalleaforder(Z, dist_vec);
    end

    % 应用排序到原始连接矩阵
    C_ordered = C(order, order);
end